package com.lantosec.hmrp.modules.internal.mapper;

import com.lantosec.hmrp.modules.internal.entity.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lantosec.hmrp.modules.system.entity.SysDeptUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 评价方案 Mapper 接口
 * </p>
 *
 * @author AutoCode
 * @since 2020-04-23
 */
public interface InternalPlanMapper extends BaseMapper<InternalPlan> {

    /**
     * 新增考评方案项目
     * @param parm
     */
    void saveInternalPlanItem(@Param("parm") InternalPlanItem parm);

    /**
     * 新增考评方案考评方
     * @param parm
     */
    void saveInternalPlanExecutor(@Param("parm") InternalPlanExecutor parm);

    /**
     * 新增考评方案被考评方
     * @param parm
     */
    void saveInternalPlanTarget(@Param("parm") InternalPlanTarget parm);

    /**
     * 新增考评方案的评价等级
     * @param parm
     */
    void saveInternalPlanLevel(@Param("parm") InternalPlanLevel parm);

    /**
     * 删除考评方案项目
     * @param internalPlanId
     */
    void deleteInternalPlanItem(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 删除考评方案考评方
     * @param internalPlanId
     */
    void deleteInternalPlanExecutor(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 删除考评方案被考评方
     * @param internalPlanId
     */
    void deleteInternalPlanTarget(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 删除考评方案的评价等级
     * @param internalPlanId
     */
    void deleteInternalPlanLevel(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 查询考评方案项目
     * @param internalPlanId
     * @return
     */
    List<InternalPlanItem> getInternalPlanItem(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 查询考评方案的评价方
     * @param internalPlanId
     * @return
     */
    List<InternalPlanExecutor> getInternalPlanExecutor(@Param("internalPlanId") Integer internalPlanId, @Param("executorMode") Integer executorMode);

    /**
     * 查询考评方案的被评价方
     * @param internalPlanId
     * @return
     */
    List<InternalPlanTarget> getInternalPlanTarget(@Param("internalPlanId") Integer internalPlanId, @Param("targetMode") Integer targetMode);

    /**
     * 查询考评方案的评价等级
     * @param internalPlanId
     * @return
     */
    List<InternalPlanLevel> getInternalPlanLevel(@Param("internalPlanId") Integer internalPlanId);

    /**
     * 查询出部门下的所有人员id
     * @param executorId
     * @return
     */
    List<SysDeptUser> getUserIdByDeptId(@Param("executorId") String executorId);
}
